package day20180131.testInit;

/**
 * Created by 14394 on 2018/1/31.
 */
//引用静态常量时，常量在编译阶段会存入类的常量池中，本质上并没有直接引用到定义常量的类

    /*在编译阶段通过常量传播优化，常量a的值"5556"实际上已经存储到了NotInitialization类的常量池中，
    以后NotInitialization对常量ConstClass.HELLOWORLD的引用实际上都被转化为NotInitialization类
    对自身常量池的引用了。也就是说，实际上的NotInitialization的Class文件中并没有Test类的符号引用入口，
    这两个类在编译成Class之后就不存在任何联系了。*/

public class TestClassInit2 {
    static {
        System.out.println("i will run!");
    }

    public static void main(String[] args) {
        System.out.println(Test.a);
    }


}

class Test{
    public static final int a = 5556;

    static {
        System.out.println("Test have run!");
    }
}
